home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 3 / Info_Mac_1994-01.iso / Development / General / GCC 1.37.1r15 / Machines / tm-sequent.h < prev    next >
Text File  |  1990-03-14  |  4KB  |  108 lines

  1. /* Definitions of target machine for GNU compiler.  SEQUENT NS32000 version.
  2.    Copyright (C) 1987 Free Software Foundation, Inc.
  3.    Contributed by Michael Tiemann (tiemann@mcc.com)
  4.  
  5. This file is part of GNU CC.
  6.  
  7. GNU CC is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 1, or (at your option)
  10. any later version.
  11.  
  12. GNU CC is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with GNU CC; see the file COPYING.  If not, write to
  19. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20.  
  21. /* Two flags to control how addresses are printed in assembler insns.  */
  22. #define SEQUENT_ADDRESS_BUG 1
  23. #define SEQUENT_BASE_REGS
  24.  
  25. #include "tm-ns32k.h"
  26.  
  27. /* This is BSD, so it wants DBX format.  */
  28. #define DBX_DEBUGGING_INFO
  29.  
  30. /* Sequent has some changes in the format of DBX symbols.  */
  31. #define DBX_NO_XREFS 1
  32.  
  33. /* Don't split DBX symbols into continuations.  */
  34. #define DBX_CONTIN_LENGTH 0
  35.  
  36. #define TARGET_DEFAULT 1
  37.  
  38. /* Print subsidiary information on the compiler version in use.  */
  39. #undef TARGET_VERSION
  40. #define TARGET_VERSION fprintf (stderr, " (32000, Sequent syntax)");
  41.  
  42. #undef CPP_PREDEFINES
  43. #define CPP_PREDEFINES "-Dns32000 -Dsequent -Dunix"
  44.  
  45. /* This is how to align the code that follows an unconditional branch.
  46.    Don't define it, since it confuses the assembler (we hear).  */
  47.  
  48. #undef ASM_OUTPUT_ALIGN_CODE
  49.  
  50. /* Assember pseudo-op for shared data segment. */
  51. #define SHARED_SECTION_ASM_OP ".shdata"
  52.  
  53. /* %$ means print the prefix for an immediate operand.
  54.    On the sequent, no prefix is used for such.  */
  55.  
  56. #undef PRINT_OPERAND
  57. #define PRINT_OPERAND(FILE, X, CODE)  \
  58. { if (CODE == '$') ;                            \
  59.   else if (CODE == '?');                        \
  60.   else if (GET_CODE (X) == REG)                        \
  61.     fprintf (FILE, "%s", reg_names[REGNO (X)]);                \
  62.   else if (GET_CODE (X) == MEM)                        \
  63.     {                                    \
  64.       rtx xfoo;                                \
  65.       xfoo = XEXP (X, 0);                        \
  66.       switch (GET_CODE (xfoo))                        \
  67.     {                                \
  68.     case MEM:                            \
  69.       if (GET_CODE (XEXP (xfoo, 0)) == REG)                \
  70.         if (REGNO (XEXP (xfoo, 0)) == STACK_POINTER_REGNUM)        \
  71.           fprintf (FILE, "0(0(sp))");                \
  72.         else fprintf (FILE, "0(0(%s))",                \
  73.               reg_names[REGNO (XEXP (xfoo, 0))]);        \
  74.       else                                \
  75.         {                                \
  76.           fprintf (FILE, "0(");                    \
  77.           output_address (xfoo);                    \
  78.           putc (')', FILE);                        \
  79.         }                                \
  80.       break;                            \
  81.     case REG:                            \
  82.       fprintf (FILE, "0(%s)", reg_names[REGNO (xfoo)]);        \
  83.       break;                            \
  84.     case PRE_DEC:                            \
  85.     case POST_INC:                            \
  86.       fprintf (FILE, "tos");                    \
  87.       break;                            \
  88.     case CONST_INT:                            \
  89.       fprintf (FILE, "@%d", INTVAL (xfoo));                \
  90.       break;                            \
  91.     default:                            \
  92.       output_address (xfoo);                    \
  93.       break;                            \
  94.     }                                \
  95.     }                                    \
  96.   else if (GET_CODE (X) == CONST_DOUBLE && GET_MODE (X) != DImode)    \
  97.     if (GET_MODE (X) == DFmode)                        \
  98.       { union { double d; int i[2]; } u;                \
  99.     u.i[0] = CONST_DOUBLE_LOW (X); u.i[1] = CONST_DOUBLE_HIGH (X);    \
  100.     fprintf (FILE, "0d%.20e", u.d); }                \
  101.     else { union { double d; int i[2]; } u;                \
  102.        u.i[0] = CONST_DOUBLE_LOW (X); u.i[1] = CONST_DOUBLE_HIGH (X); \
  103.        fprintf (FILE, "0f%.20e", u.d); }                \
  104.   else output_addr_const (FILE, X); }
  105.  
  106. #undef PRINT_OPERAND_ADDRESS
  107. #define PRINT_OPERAND_ADDRESS(FILE, ADDR)  print_operand_address(FILE, ADDR)
  108.